<template>
  <HomePancel title="人气推荐" sub-title="人气爆款 不容错过" ref="target">
    <ul ref="pannel" class="goods-list">
      <li v-for="item in list" :key="item.id">
        <RouterLink to="/">
          <img :src="item.picture" alt="" />
          <p class="name">{{ item.tiele }}</p>
          <p class="price">{{ item.alt }}</p>
        </RouterLink>
      </li>
    </ul>
  </HomePancel>
</template>
<script>
import HomePancel from './home-panel'
import { findHot } from '@/api/home'
import { ref } from 'vue'
// 引入监听api的方法
// import { useIntersectionObserver } from '@vueuse/core'
import { useObserver } from '@/compositions/index'
export default {
  components: {
    HomePancel
  },
  setup () {
    // 1.定义响应式数据
    const list = ref([])
    // 2.定义函数 内部调用接口函数
    async function getList () {
      console.log(23)
      const res = await findHot()
      console.log('热门', res)
      list.value = res.result
    }
    // // 3.onMounted里调用gitList
    // onMounted(() => {
    //   getList()
    // })
    // const target = ref(null)
    // // stop是一个可执行的方法 调用就会停止监听
    // // 不管元素进入还是离开视口区域都不会再执行回调函数
    // // 注意: 不会只监听一次 只有进入视口或者离开视口回调函数都会执行
    // const { stop } = useIntersectionObserver(
    //   // 监听目标元素
    //   target,
    //   ([{ isIntersecting }], observeeElement) => {
    //     // isIntersecting 布尔值 代表当前监听的元素是否进入视口
    //     console.log('布尔', isIntersecting)
    //     // 判断 true就发送ajax
    //     if (isIntersecting) {
    //       // 发送网络请求
    //       getList()
    //       // 请求完毕停止监听
    //       stop()
    //     }
    //   }
    // )
    const { target } = useObserver(getList)
    return {
      list,
      target
    }
  }
}
</script>
<style scoped lang='less'>
.goods-list {
  display: flex;
  justify-content: space-between;
  height: 426px;
  li {
    width: 306px;
    height: 406px;
    img {
      width: 306px;
      height: 306px;
    }
    p {
      font-size: 22px;
      padding-top: 12px;
      text-align: center;
    }
    .desc {
      color: #999;
      font-size: 18px;
    }
  }
}
</style>
